home *** CD-ROM | disk | FTP | other *** search
- CR EQU 0DH
- LF EQU 0AH
- CODE SEGMENT
- ASSUME CS:CODE,DS:CODE
- ORG 100H
- START: MOV STKPTR,SP
- MOV AH,0
- MOV SI,81H
- DRVLP: LODSB
- CMP AL,CR
- JZ DRVEND
- CMP AL,':'
- JZ GOTDRV
- MOV AH,AL
- JMP DRVLP
- DRVEND: MOV DX,OFFSET MSG5
- MOV AH,9
- INT 21H
- INT 20H
- GOTDRV: AND AH,5FH
- CMP AH,'A'
- JB DRVLP
- CMP AH,'C'
- JNB DRVLP
- MOV AX,CS
- MOV SS,AX
- MOV SP,OFFSET LOCAL_STACK
- MOV DS,AX
- MOV ES,AX
- MOV BX,OFFSET LOCAL_STACK+15
- MOV CL,4
- SHR BX,CL
- MOV AH,4AH
- INT 21H
- JNC NOALCERR
- MOV DX,OFFSET MSG1
- MOV AH,9
- INT 21H
- INT 20H
- NOALCERR:
- MOV AX,CS
- MOV PARBLK+4,AX
- MOV PARBLK+8,AX
- MOV PARBLK+12,AX
- MOV AL,DS:80H
- MOV SI,OFFSET PREFMSG
- MOV DI,OFFSET CMDLIN
- ADD AL,10
- STOSB
- MOV CX,5
- REP MOVSW
- MOV SI,80H
- LODSB
- INC AL
- MOV CL,AL
- SUB CH,CH
- REP MOVSB
- MOV AX,DS:2CH
- MOV DS,AX
- MOV SI,0
- MOV DI,OFFSET COMSPEC
- LOOP1: PUSH DI
- PUSH SI
- MOV CX,4
- REP CMPSW
- JZ GOTSPEC
- POP SI
- POP DI
- LOOP2: LODSB
- OR AL,AL
- JNZ LOOP2
- MOV AL,[SI]
- OR AL,AL
- JNZ LOOP1
- MOV AX,CS
- MOV DS,AX
- MOV DX,OFFSET MSG2
- MOV AH,9
- INT 21H
- INT 20H
- GOTSPEC:
- POP DI
- POP DI
- MOV DX,SI
- MOV BX,OFFSET PARBLK
- MOV AX,4B00H
- INT 21H
- MOV AX,CS
- MOV SS,AX
- MOV SP,CS:STKPTR
- MOV DS,AX
- MOV ES,AX
- INT 20H
- MSG1 DB 'Unable to release memory.$'
- COMSPEC DB 'COMSPEC='
- MSG2 DB 'COMSPEC must be set$'
- MSG5 DB 'Must specify drive A: or B: to format$'
- PARBLK DW 0,CMDLIN,?,FCB1,?,FCB2,?
- CMDLIN DB 0,CR,0,128 DUP(?)
- PREFMSG DB ' /C REALFM'
- STKPTR DW ?
- FCB1 DB 0,11 DUP('?'),25 DUP(0)
- FCB2 DB 0,11 DUP(' '),25 DUP (0)
- ENDCODE LABEL BYTE
- LOCAL_STACK EQU ENDCODE+2048
- CODE ENDS
- END START
- DUP('?'),25 DU